package fr.charlott.core.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import fr.charlott.core.repository.SaisonJpaRepository;
import fr.charlott.core.repository.model.Saison;
import fr.charlott.core.service.SaisonService;

@Service("coreSaisonService")
public class SaisonServiceImpl implements SaisonService {

	private SaisonJpaRepository saisonJpaRepository;

	public SaisonServiceImpl() {
		super();
	}

	@Autowired(required = true)
	public SaisonServiceImpl(SaisonJpaRepository saisonJpaRepository) {
		this();
		this.saisonJpaRepository = saisonJpaRepository;
	}

	@Override
	@Transactional(readOnly = true)
	public Saison chargerParAnnee(short annee) {
		return saisonJpaRepository.findByAnnee(annee);
	}

	@Override
	@Transactional(readOnly = true)
	public List<Saison> chargerTousLesSaisons() {
		return saisonJpaRepository.findAll();
	}

	@Override
	@Transactional(readOnly = true)
	public Saison chargerSaisonCourante() {
		return saisonJpaRepository.findBySaisonCouranteTrue();
	}

	@Override
	@Transactional
	public void ajouterSaison(Saison saison) {
		saisonJpaRepository.saveAndFlush(saison);
	}
	
	@Override
	@Transactional
	public void supprimerSaison(Saison saison) {
		saisonJpaRepository.delete(saison);
	}
	
	@Override
	@Transactional
	public void supprimerToutesLesSaisons() {
		saisonJpaRepository.deleteAll();
	}
	
	@Override
	@Transactional
	public void reinitialiserToutesLesSaisons() {
		saisonJpaRepository.resetAllSaisonCouranteToFalse();
	}

	// getters - setters

	/**
	 * @param saisonJpaRepository
	 *            the saisonJpaRepository to set
	 */
	public void setSaisonJpaRepository(SaisonJpaRepository saisonJpaRepository) {
		this.saisonJpaRepository = saisonJpaRepository;
	}

}
